//员工信息页面的store

import axios from 'axios'
import http from '../../../http/http'
import * as URL from '../../../http/api'
import el from "element-ui/src/locale/lang/el";

const state = {
    foundStaffData:{totalPage:1,staffList:[]},   //查找到的员工信息
    foundAllStore:[{storeId:1, name: "行政部"}],    //所有部门
    foundAllJob:[],    //所有职位
    pages:{currentPage:1,pageSize:5},   //当前页，页容量
    pageState:'showAll',   //页面状态，showAll:展示所有数据，showSelect:展示查询数据
    thisSelectObj:{}, //用于查询的参数
};

const actions = {
    //-------------------公用部分-------------------
    //获取所有部门
    selectStore({commit}){
        return http({
            url:URL.staffInformationAllStore,
            method:'post',
            data:{},
        }).then(res=>{
            /* console.log('以下是接口返回的所有部门信息');
             console.log(res);
             console.log('=================');*/
            if (res.data.code===200) commit('saveSelectStore',res.data);
            return res.data;
        });
    },
    //获取所有职位
    selectJob({commit}){
        return http({
            url:URL.staffInformationAllJob,
            method:'post',
            data:{},
        }).then(res=>{
            /*console.log('以下是接口返回的所有职位信息');
            console.log(res);
            console.log('=================');*/
            if (res.data.code===200) commit('saveSelectJob',res.data);
            return res.data;
        });
    },
    //修改当前页码
    changeCurrentPage({commit},obj){
        commit('saveCurrentPage',obj.currentPage);
    },
    //-------------------员工信息表格部分-------------------
    showStaffInfo({commit},obj){
        return http({
            url:URL.staffInformationPage,
            method:'post',
            data:obj,
        }).then(res=>{
            /*console.log('以下是接口返回的所有员工信息');
            console.log(res);
            console.log('=================');*/
            if (res.data.code===200){
                commit('saveSelectStaff',res.data);
            }
            return res.data;
        });
    },
    //-------------------新增员工部分-------------------
    //查看员工名重复
    isTrueStaffName({commit},obj){
        // console.log(obj);
        return http({
            url:URL.staffInformationName,
            method:'post',
            data:obj,
        }).then(res=>{
            // console.log(res);
            return res.data;
        });
    },

    //提交新增员工
    addNewStaff({commit},obj){
        obj.sex==='男' ? obj.sex=1 : obj.sex=2;
        obj.baseSalary=parseFloat(obj.baseSalary);
        // console.log(obj);
        return http({
            url:URL.staffInformationAddStaff,
            method:'post',
            data:obj,
        }).then(res=>{
            // console.log(res);
            return res.data;
        });
    },

    //-------------------查询员工部分-------------------
    selectStaffByObj({commit},obj){
        let _obj={
            name:obj.name.toString(),
            sex:parseInt(obj.sex),
            idCard:obj.idCard.toString(),
        };
        // console.log(_obj);
        return http({
            url:URL.staffInformationSelect,
            method:'post',
            data:_obj,
        }).then(res=>{
            // console.log(res);
            if (res.data.code===200){
                commit('saveSelectStaff',res.data);   //保存查到的信息
                commit('saveSelectObj',_obj);    //保存查询条件
            }
            return res.data;
        });
    },

    //-------------------删除员工部分-------------------
    toDelStaff({commit},obj){
        // console.log(obj);
        return http({
            url:URL.staffInformationDelStaff,
            method:'post',
            data:obj,
        }).then(res=>{
            // console.log(res);
            return res.data;
        });
    },

    //-------------------编辑员工部分-------------------
    editThisStaff({commit},obj){
        // console.log(obj);
        let _obj = {   //以防万一，再转一次
            staffId:parseInt(obj.staffId),
            number:obj.number.toString(),
            name:obj.name.toString(),
            password:obj.password.toString(),
            sex:1,
            idCard:obj.idCard.toString(),
            tel:obj.tel.toString(),
            storeId:parseInt(obj.storeId),
            jobId:parseInt(obj.jobId),
            baseSalary:parseFloat(obj.baseSalary),
            updateBy:obj.updateBy,
            // updateTime:obj.updateTime
        };
        obj.sex==='男' ? _obj.sex=1 : _obj.sex=2;
        return http({
            url:URL.staffInformationEditStaff,
            method:'post',
            data:_obj,
        }).then(res=>{
            // console.log(res);
            return res.data;
        });
    }
};

const mutations = {
    //将查找到的员工信息存起来
    saveSelectStaff(state,obj){
        state.foundStaffData.staffList=obj.staffList;
        if(obj.totalPage===undefined){
            // 展示查询数据的情况
            state.foundStaffData.totalPage = Math.ceil(obj.staffList.length/state.pages.pageSize);
            state.pageState='showSelect';
        } else{
            // 展示所有数据的情况
            state.foundStaffData.totalPage=obj.totalPage;
            state.pageState='showAll';
        }
        this.commit('addStoreName');   //添加storeName字段
        this.commit('addJobName');    //添加对应的jobName字段
        this.commit('changeSex');    //转换对应的性别
    },
    //保存条件查询条件（用于分页的页面点击再次发起请求）
    saveSelectObj(state,obj){
        state.thisSelectObj=obj;
    },
    //将查找到的所有部门信息存起来
    saveSelectStore(state,obj){
        // console.log(obj);
        state.foundAllStore=obj.storeList;
    },
    //将查找到的所有职位信息存起来
    saveSelectJob(state,obj){
        // console.log(obj);
        state.foundAllJob=obj.jobList;
    },
    //将员工信息中员工的部门id与部门名称对应
    addStoreName(state){
        state.foundStaffData.staffList.forEach(staffItem=>{
            staffItem.storeName='待定';
            state.foundAllStore.forEach(storeItem=>{      //如果员工表storeId找到对应的部门表storeId
                if(staffItem.storeId===storeItem.storeId) staffItem.storeName=storeItem.name;
            })
        });
    },
    //将员工信息中员工的职位id与职位名称对应
    addJobName(state){
        state.foundStaffData.staffList.forEach(staffItem=>{
            staffItem.jobName='待定';
            state.foundAllJob.forEach(jobItem=>{
                if(staffItem.jobId===jobItem.jobId) staffItem.jobName=jobItem.name;
            })
        });
    },
    //将员工信息中员工的性别转为男/女
    changeSex(state){
        state.foundStaffData.staffList.forEach(staffItem=>{
            staffItem.sex===1 ? staffItem.sex='男' : staffItem.sex='女'
        });
    },
    //修改当前页码
    saveCurrentPage(state,obj) {
        state.pages.currentPage=obj;
    }
};

const getters = {

};

export default{
    state,
    actions,
    mutations,
    getters
}